/*
  Generator函数
    1.生成器函数，是异步代码同步化的解决方法，
    2. 函数名前加* ，
    3. 返回值是Iterator接口，
    4. 内部部署yield 表示阻塞和产出的意思
*/
let { log } = console
let f1 = () => {
  function* fn() {
    yield 'hello'
    yield 'world'
    return 'ending'
  }

  let it = fn()
  // while (1) {
  //   let rt = it.next()
  //   if (rt.done) {
  //     break
  //   }
  //   console.log(rt.value)
  // }
  for (let item of it) {
    console.log(item)
  }
}

// 2. 异步代码同步化的解决方案
let f2 = () => {
  function* _ajaxs() {
    yield $.ajax({
      url: 'http://146.56.230.35:3007/users/login',
      type: 'POST',
      data: {
        username: 'root123',
        userPassword: 'root123',
      },
      success(res) {
        log(res)
      },
    })
    yield $.ajax({
      url: 'https://api-hmugo-web.itheima.net/api/public/v1/goods/search',
      type: 'GET',
      data: {
        query: '',
        cid: 5,
        pagenum: 1,
        pagesize: 10,
      },
      success(res) {
        log(res)
      },
    })
  }
  let it = _ajaxs()
  it.next()
  it.next()
}
f2()
